Per contatti: andrearubiola.97@gmail.com

In [25]:
import matplotlib.pyplot as plt
from PIL import Image
import matplotlib.image as mpimg
import numpy as np


# Convertite in scala di grigi

img_1 = Image.open('Image_Editor (2).png').convert('L')
img_2 = Image.open('Image_Editor (1).png').convert('L')
img_3 = Image.open('Image_Editor (3).png').convert('L')
img_4 = Image.open('Image_Editor (4).png').convert('L')
img_5 = Image.open('Image_Editor (5).png').convert('L')

   
# Latex: per impostare la grafica "come se fosse un vero articolo scientifico"
font = {'size'   : 48, 'family':'STIXGeneral'}
axislabelfontsize='x-large'
plt.rc('font', **font)
plt.rcParams['text.usetex'] = True
np.set_printoptions(precision=3,linewidth=200,suppress=False)

#img.save('output_file.jpg')
In [2]:
Image.open('Image_Editor (2).png')#.convert('L')
Out[2]:
In [3]:
Image.open('Image_Editor (1).png')#.convert('L')
Out[3]:
In [4]:
Image.open('Image_Editor (3).png')#.convert('L')
Out[4]:
In [5]:
Image.open('Image_Editor (4).png')#.convert('L')
Out[5]:
In [6]:
Image.open('Image_Editor (5).png')#.convert('L')
Out[6]:
In [7]:
image = np.asarray(img_1)
In [8]:
npix_1 = image.shape[0]
npix_1
npix_2 = image.shape[1]
In [9]:
fourier_image = np.fft.fftn(image)
In [10]:
fourier_amplitudes = np.abs(fourier_image)**2
In [11]:
kfreq_1 = np.fft.fftfreq(npix_1) * npix_1
kfreq_2 = np.fft.fftfreq(npix_2) * npix_2
In [12]:
kfreq2D = np.meshgrid(kfreq_1, kfreq_2)
In [13]:
knrm = np.sqrt(kfreq2D[0]**2 + kfreq2D[1]**2)
#knrm
In [14]:
knrm = knrm.flatten()
fourier_amplitudes = fourier_amplitudes.flatten()
In [15]:
kbins = np.arange(0.5, npix_1//2+1, 1.)

#kbins
In [16]:
kvals_1 = 0.5 * (kbins[1:] + kbins[:-1])
In [17]:
import scipy.stats as stats
Abins_1, _, _ = stats.binned_statistic(knrm, fourier_amplitudes,
statistic = "mean",bins = kbins)
In [18]:
Abins_1 *= np.pi * (kbins[1:]**2 - kbins[:-1]**2)
In [19]:
image = np.asarray(img_2)
npix_1 = image.shape[0]
npix_1

npix_2 = image.shape[1]

npix_2

import numpy as np

fourier_image = np.fft.fftn(image)

fourier_amplitudes = np.abs(fourier_image)**2

kfreq_1 = np.fft.fftfreq(npix_1) * npix_1
kfreq_2 = np.fft.fftfreq(npix_2) * npix_2

kfreq2D = np.meshgrid(kfreq_1, kfreq_2)

knrm = np.sqrt(kfreq2D[0]**2 + kfreq2D[1]**2)
knrm

knrm = knrm.flatten()
fourier_amplitudes = fourier_amplitudes.flatten()

kbins = np.arange(0.5, npix_1//2+1, 1.)

kbins

kvals_2 = 0.5 * (kbins[1:] + kbins[:-1])

import scipy.stats as stats
Abins_2, _, _ = stats.binned_statistic(knrm, fourier_amplitudes,
statistic = "mean",bins = kbins)

Abins_2 *= np.pi * (kbins[1:]**2 - kbins[:-1]**2)
In [20]:
image = np.asarray(img_3)
npix_1 = image.shape[0]
npix_1

npix_2 = image.shape[1]

npix_2

import numpy as np

fourier_image = np.fft.fftn(image)

fourier_amplitudes = np.abs(fourier_image)**2

kfreq_1 = np.fft.fftfreq(npix_1) * npix_1
kfreq_2 = np.fft.fftfreq(npix_2) * npix_2

kfreq2D = np.meshgrid(kfreq_1, kfreq_2)

knrm = np.sqrt(kfreq2D[0]**2 + kfreq2D[1]**2)
knrm

knrm = knrm.flatten()
fourier_amplitudes = fourier_amplitudes.flatten()

kbins = np.arange(0.5, npix_1//2+1, 1.)

kbins

kvals_3 = 0.5 * (kbins[1:] + kbins[:-1])

import scipy.stats as stats
Abins_3, _, _ = stats.binned_statistic(knrm, fourier_amplitudes,
statistic = "mean",bins = kbins)

Abins_3 *= np.pi * (kbins[1:]**2 - kbins[:-1]**2)
In [21]:
image = np.asarray(img_4)
npix_1 = image.shape[0]
npix_1

npix_2 = image.shape[1]

npix_2

import numpy as np

fourier_image = np.fft.fftn(image)

fourier_amplitudes = np.abs(fourier_image)**2

kfreq_1 = np.fft.fftfreq(npix_1) * npix_1
kfreq_2 = np.fft.fftfreq(npix_2) * npix_2

kfreq2D = np.meshgrid(kfreq_1, kfreq_2)

knrm = np.sqrt(kfreq2D[0]**2 + kfreq2D[1]**2)
knrm

knrm = knrm.flatten()
fourier_amplitudes = fourier_amplitudes.flatten()

kbins = np.arange(0.5, npix_1//2+1, 1.)

kbins

kvals_4 = 0.5 * (kbins[1:] + kbins[:-1])

import scipy.stats as stats
Abins_4, _, _ = stats.binned_statistic(knrm, fourier_amplitudes,
statistic = "mean",bins = kbins)

Abins_4 *= np.pi * (kbins[1:]**2 - kbins[:-1]**2)
In [23]:
image = np.asarray(img_5)
npix_1 = image.shape[0]
npix_1

npix_2 = image.shape[1]

npix_2

import numpy as np

fourier_image = np.fft.fftn(image)

fourier_amplitudes = np.abs(fourier_image)**2

kfreq_1 = np.fft.fftfreq(npix_1) * npix_1
kfreq_2 = np.fft.fftfreq(npix_2) * npix_2

kfreq2D = np.meshgrid(kfreq_1, kfreq_2)

knrm = np.sqrt(kfreq2D[0]**2 + kfreq2D[1]**2)
knrm

knrm = knrm.flatten()
fourier_amplitudes = fourier_amplitudes.flatten()

kbins = np.arange(0.5, npix_1//2+1, 1.)

kbins

kvals_5 = 0.5 * (kbins[1:] + kbins[:-1])

import scipy.stats as stats
Abins_5, _, _ = stats.binned_statistic(knrm, fourier_amplitudes,
statistic = "mean",bins = kbins)

Abins_5 *= np.pi * (kbins[1:]**2 - kbins[:-1]**2)
In [26]:
plt.figure(figsize=(18,12))
plt.loglog(kvals_1, Abins_1,label='Foresta',lw=3)
plt.loglog(kvals_2, Abins_2,label='Albero di  natale',lw=3)
plt.loglog(kvals_3, Abins_3,label='Gioconda',lw=3)
plt.loglog(kvals_4, Abins_4,label='Mondrian',lw=3)
plt.loglog(kvals_5, Abins_5,label='Ragnatela cosmica',color='k',lw=3)

plt.xlabel("$k$")
plt.ylabel("$P(k)$")
plt.tight_layout()
plt.grid()
plt.legend(loc =(1.1,0))
Out[26]:
<matplotlib.legend.Legend at 0x7ff79b0525d0>
In [ ]:
#pip install nbconvert
In [ ]:
#pip install pyppeteer
In [ ]: